#include <QtXml>
#include <QFile>
#include "configreader.h"

ConfigReader::ConfigReader()
{
}


bool ConfigReader::readConfigFile(QString filepath, Host* myHost, QList<Host>* remoteHosts){

    QDomDocument document;

    QFile file(filepath);

    // load the file
    if(!file.open(QIODevice::ReadOnly | QIODevice::Text)){
        qDebug() << "Nie udało się otworzyć pliku konfiguracyjnego.";
        return false;
    }else{

        if(!document.setContent(&file)){
            qDebug() << "Nie udało się załadować pliku konfiguracyjnego jako dokument XML.";
            return false;
        }
        file.close();
    }

    // get the root element
    QDomElement root = document.firstChildElement();

    // MyHost node
    QDomElement myHostConf = root.firstChildElement("MyHost");

    // set id of local host
    myHost->setId(myHostConf.firstChild().firstChild().toText().data().toInt());

    // set port of localhost
    myHost->setPort(myHostConf.firstChild().nextSibling().firstChild().toText().data().toInt());

    myHost->setHostName("localhost");

    // RemoteHost nodes
    QDomNodeList remoteHostsConf = root.elementsByTagName("RemoteHost");

    for(int i = 0; i < remoteHostsConf.length(); ++i){

        QDomNode n = remoteHostsConf.at(i).firstChild();
        remoteHosts->push_back(Host(n.firstChild().toText().data().toInt(),
                            n.nextSibling().nextSibling().firstChild().toText().data().toInt(),
                            n.nextSibling().firstChild().toText().data()));

    }

    return true;

} // readConfigFile
